/**
 * <strong>Title : UserWarehouseDao.java<br>
 * </strong> <strong>Package : cn.b.sky.mes.mm.dao<br>
 * </strong> <strong>Description : </strong>@类注释说明写在此处@<br>
 * <strong>Create on : 2016年3月2日 下午2:05:21<br>
 * </strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 *          <strong>修改历史:</strong><br>
 *          修改人 | 修改日期 | 修改描述<br>
 *          -------------------------------------------<br>
 * <br>
 * <br>
 */
package cn.b.sky.mes.mm.dao;

import java.util.List;

import cn.b.sky.mes.mm.model.Warehouse;
import org.apache.ibatis.annotations.Param;

import cn.b.sky.mes.mm.model.UserWarehouse;
import cn.b.sky.mes.mm.model.condition.UserWarehouseCondition;

/**
 * <strong>Title : UserWarehouseDao.java<br></strong>
 * <strong>Package : cn.b.sky.mes.mm.dao<br></strong>
 * <strong>Description : </strong>用户仓库权限持久层<br> 
 * <strong>Create on : 2016年3月2日 下午2:05:21<br></strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br> 
 * <strong>修改历史:</strong><br>
 * 修改人    |    修改日期    |    修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface UserWarehouseDao {

  /**
   * <strong>Title : selectUserWarehouseListByCondition<br></strong>
   * <strong>Description : </strong>条件查询用户仓库权限列表<br> 
   * <strong>Create on : 2016年3月2日 下午2:37:16<br></strong>
   * <p>
   * @param condition
   * @return
   * List<UserWarehouse>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<UserWarehouse> selectUserWarehouseListByCondition(UserWarehouseCondition condition);

  /**
   * <strong>Title : getUserWarehouse<br></strong>
   * <strong>Description : </strong>获得用户仓库权限实体<br> 
   * <strong>Create on : 2016年3月2日 下午2:37:21<br></strong>
   * <p>
   * @param userCode
   * @param warehouseCode
   * @param moveTypeCode
   * @param siteCode
   * @return
   * UserWarehouse
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<UserWarehouse> getUserWarehouse(@Param("userCode") String userCode,
      @Param("warehouseCode") String warehouseCode, @Param("siteCode") String siteCode);

  /**
   * <strong>Title : selectUserWarehouseCountByCondition<br></strong>
   * <strong>Description : </strong>条件查询用户仓库权限列<br> 
   * <strong>Create on : 2016年3月2日 下午2:37:28<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int selectUserWarehouseCountByCondition(UserWarehouseCondition condition);

  /**
   * <strong>Title : insertUserWarehouse<br></strong>
   * <strong>Description : </strong>插入用户仓库权限<br> 
   * <strong>Create on : 2016年3月2日 下午2:37:35<br></strong>
   * <p>
   * @param userWarehouse
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   * @param moveTypeCode 
   */
  void insertUserWarehouse(UserWarehouse userWarehouse);

  /**
   * <strong>Title : deleteUserWarehouse<br></strong>
   * <strong>Description : </strong>删除用户仓库权限<br> 
   * <strong>Create on : 2016年3月2日 下午2:37:43<br></strong>
   * <p>
   * @param userCode
   * @param warehouseCode
   * @param moveTypeCode
   * @param siteCode
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteUserWarehouse(@Param("userCode") String userCode, @Param("warehouseCode") String warehouseCode,
      @Param("siteCode") String siteCode);

  /**
   * <strong>Title : updateUserWarehouse<br></strong>
   * <strong>Description : </strong>更新用户仓库权限<br> 
   * <strong>Create on : 2016年3月2日 下午2:37:48<br></strong>
   * <p>
   * @param userWarehouse
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateUserWarehouse(UserWarehouse userWarehouse);

  /**
   * <strong>Title : getAssignedWarehouse<br></strong>
   * <strong>Description : </strong>查询当前用户已分配权限的仓库<br> 
   * <strong>Create on : 2016年3月2日 下午3:15:32<br></strong>
   * <p>
   * @param userCode
   * @param siteCode
   * @return
   * List<Warehouse>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Warehouse> getAssignedWarehouse(@Param("userCode") String userCode, @Param("siteCode") String siteCode);

  /**
   * 
   * <strong>Title : selectUserWarehouseByMoveType<br></strong>
   * <strong>Description : </strong>根据移动类型查找仓库权限，从而判断移动类型是否被引用<br> 
   * <strong>Create on : 2016年3月10日 上午9:16:57<br></strong>
   * <p>
   * @param moveTypeCode
   * @param siteCode
   * @return
   * List<UserWarehouse>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<UserWarehouse> selectUserWarehouseByMoveType(@Param("moveTypeCode") String moveTypeCode,
      @Param("siteCode") String siteCode);

}
